syntax = "proto3";

package xray.proxy.freedom;
option csharp_namespace = "Xray.Proxy.Freedom";
option go_package = "github.com/xtls/xray-core/proxy/freedom";
option java_package = "com.xray.proxy.freedom";
option java_multiple_files = true;

import "common/protocol/server_spec.proto";

message DestinationOverride {
  xray.common.protocol.ServerEndpoint server = 1;
}

message Fragment {
  uint64 packets_from = 1;
  uint64 packets_to = 2;
  uint64 length_min = 3;
  uint64 length_max = 4;
  uint64 interval_min = 5;
  uint64 interval_max = 6;
}
message Noise {
  uint64 length_min = 1;
  uint64 length_max = 2;
  uint64 delay_min = 3;
  uint64 delay_max = 4;
  bytes packet = 5;
}

message Config {
  enum DomainStrategy {
    AS_IS = 0;
    USE_IP = 1;
    USE_IP4 = 2;
    USE_IP6 = 3;
    USE_IP46 = 4;
    USE_IP64 = 5;
    FORCE_IP = 6;
    FORCE_IP4 = 7;
    FORCE_IP6 = 8;
    FORCE_IP46 = 9;
    FORCE_IP64 = 10;
  }
  DomainStrategy domain_strategy = 1;
  DestinationOverride destination_override = 3;
  uint32 user_level = 4;
  Fragment fragment = 5;
  uint32 proxy_protocol = 6;
  repeated Noise noises = 7;
}
